﻿// Последовательность Голомба G(n) - это такая единственная неубывающая последовательность 
// натуральных чисел, в которой n появляется ровно G(n) раз
// 1 2 2 3 3 4 4 4 5 5 5 6 6 6 6 …
// Без кеширования время выполнения огромное за счет повторяющихся рекурсивных вызовов
[Cache]
function G(n: int64): int64 := n = 1 ? 1 : 1 + G(n - G(G(n - 1)));

begin
  var n := 100000;
  (1..n).Sum(i -> G(i)).Print;
  Milliseconds.Print;
end.